import './泛型'
// 类基本用法	
// class Person {
// 	name: string
// 	sex: '男' | '女'
// 	constructor(name, sex) {
// 		this.name = name
// 		this.sex = sex
// 	}
// }
// const p1 = new Person('张三', '女')
// const p2 = new Person('李四', '男')

// console.log(p1, p2);

// 继承
// class Animal {
// 	name: string //类型
// 	say: string //类型
// 	constructor(name, say) {
// 		this.name = name
// 		this.say = say
// 	}
// }

// // 继承父类 Animal
// class Dog extends Animal {
// 	job: string //类型
// 	constructor(name, say, job) {
// 		// 必须调用父类构造器
// 		super(name, say)
// 		// 自己的属性
// 		this.job = job
// 	}
// }
// class Pig extends Animal {
// 	price: number //类型
// 	constructor(name, say, price) {
// 		super(name, say)

// 		// 自己的属性
// 		this.price = price
// 	}
// }

// const d = new Dog('狗', '汪汪汪', '看家, 逗主人开心')
// console.log(d);

// const p = new Pig('猪', '哼哼哼', 1000)
// console.log(p);


// 公共 私有 保护
// class Father {
// 	// 公共属性 任何地方
// 	public name: string
// 	// 私有属性 只能在类的内部访问
// 	private money: number
// 	// 保护属性 只能在类的内部访问及其子类中访问
// 	protected area: string
// 	constructor(name, money, area) {
// 		this.name = name
// 		this.money = money
// 		this.area = area
// 	}
// }

// class Son extends Father {
// 	constructor(name, money, area) {
// 		super(name, money, area)
// 		this.area = '啥也没有'
// 	}
// }


// const s = new Son('儿子1', 10, '第一房子')

// console.log(s);

// // 抽象类
// abstract class Animal {
// 	// 抽象属性
// 	abstract name: string
// 	abstract age: string
// 	// 抽象函数
// 	abstract sayName()
// 	sex: string
// }


// // 派生类
// class Dog extends Animal {
// 	name: string;
// 	age: string;
// 	sayName() {

// 	}
// }

// 函数
// 函数声明
// function add(a: number, b: number): number {
// 	return a + b
// }
// const a = add(1, 2)
// console.log(a);

// const num: number = 1

// 函数表达式
// 可选参数
// let sub: (a: number, b: number, c?: number) => number

// sub = (a: number, b: number, c?: number): number => {	
// 	if (typeof c === "undefined") {
// 		return a - b
// 	}

// 	return a + b - c
// }

// const b = sub(1, 2)
// const c = sub(3, 5, 1)
// console.log(b, c);

// 默认参数
// function fun(num: number = 1, ...args) {
// 	console.log(num, args);
	
// }

// const aaa1 = fun(123, 1, 2, 3, 4, 5)


// function fun(a) {

// }